python中有很多方法去画心形图用来表白,其中最典型的就是数学中心型曲线:r=a(1-sinθ),下面就总结以下python中那些画心形图的方法。末尾有一个完美的表白工具,可以直接使用。
数学中美丽的心形线:r=a(1-sinθ)
import numpy as np
import matplotlib.pyplot as plt
T = np.linspace(0, 2 * np.pi, 1024) # 角度范围 0-2*pi,划为1024等份
plt.axes(polar=True) # 开启极坐标模式
plt.plot(T, 1. - np.sin(T), color="r")
plt.show()
![在这里插入图片描述](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d987e5c1475d44b0a4aea97630e64f11~tplv-k3u1fbpfcp-zoom-1.image)
利用python的turtle教你动态的爱心图表白
import turtle
turtle.color('red', 'pink')
turtle.pensize(2)
turtle.pendown()
turtle.setheading(150)
turtle.begin_fill()
turtle.fd(50)
turtle.circle(50 * -3.745, 45)
turtle.circle(50 * -1.431, 165)
turtle.left(120)
turtle.circle(50 * -1.431, 165)
turtle.circle(50 * -3.745, 45)
turtle.fd(50)
turtle.end_fill()
![在这里插入图片描述](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2f00c7d033d841a5a252a060efc94c1a~tplv-k3u1fbpfcp-zoom-1.image)
利用python的plt教你画渐变颜色爱心图表白
import matplotlib.pyplot as plt
from matplotlib import animation
import numpy as np
import math
t = np.linspace(0, math.pi, 1000)
x = np.sin(t)
y = np.cos(t) + np.power(x, 2.0 / 3) # 心型曲线的参数方程
plt.scatter(x, y, c=y, cmap=plt.cm.Reds, edgecolor='none', s=40)
plt.scatter(-x, y, c=y, cmap=plt.cm.Reds, edgecolor='none', s=40) # 渐变颜色曲线
# 填充曲线
plt.fill(x, y, 'r', alpha=0.6)
plt.fill(-x, y, 'r', alpha=0.6)
plt.axis([-2, 2, -2, 2]) # 坐标轴范围
plt.title("I love you", fontsize=30)
# 取消坐标轴显示
plt.axis('off')
# 保存文件
plt.savefig("❤图1.png") # 在 plt.show() 之前调用 plt.savefig()
plt.show()
alpha=0
![在这里插入图片描述](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f4e93cd7fe994496897ad493788860c0~tplv-k3u1fbpfcp-zoom-1.image)
alpha=0.3
![在这里插入图片描述](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cbcc71b3496e4248b35eeba6eeed7648~tplv-k3u1fbpfcp-zoom-1.image)
alpha=0.6
![在这里插入图片描述](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bd0ac9a28a9c4c2a97f79285cb63571d~tplv-k3u1fbpfcp-zoom-1.image)
利用python的plt教你画3D爱心图表白
# coding=utf-8
# 3D心形
import matplotlib.pyplot as plt
import numpy as np
import matplotlib
matplotlib.rcParams['axes.unicode_minus'] = False
def heart_3d(x, y, z):
return (x**2+(9/4)*y**2+z**2-1)**3-x**2*z**3-(9/80)*y**2*z**3
def plot_implicit(fn, bbox=(-1.5, 1.5)):
xmin, xmax, ymin, ymax, zmin, zmax = bbox*3
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
A = np.linspace(xmin, xmax, 100) # 轮廓分辨率
B = np.linspace(xmin, xmax, 40) # 切片数量
A1, A2 = np.meshgrid(A, A) # 绘制等高线的网格
for z in B: # 在XY平面绘制等高线
X, Y = A1, A2
Z = fn(X, Y, z)
cset = ax.contour(X, Y, Z+z, [z], zdir='z', colors=('r',))
for y in B: # 在XZ平面绘制等高线
X, Z = A1, A2
Y = fn(X, y, Z)
cset = ax.contour(X, Y+y, Z, [y], zdir='y', colors=('red',))
for x in B: # 在YZ平面绘制等高线
Y, Z = A1, A2
X = fn(x, Y, Z)
cset = ax.contour(X+x, Y, Z, [x], zdir='x',colors=('red',))
ax.set_zlim3d(zmin, zmax)
ax.set_xlim3d(xmin, xmax)
ax.set_ylim3d(ymin, ymax)
# 标题
plt.title("I love you", fontsize=30)
# 取消坐标轴显示
plt.axis('off')
# 保存文件
plt.savefig("3D_❤图.png") # 在 plt.show() 之前调用 plt.savefig()
plt.show()
if __name__ == '__main__':
plot_implicit(heart_3d)
![在这里插入图片描述](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ea9d5fa5a31549af8ab0ee727bc75e57~tplv-k3u1fbpfcp-zoom-1.image)
利用python一行代码教你画爱心图表白
print('\n'.join([''.join([('ILOVEYOUWP'[(x-y) % 10]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 |